import storage from 'good-storage'

// 存储时的key
const SEARCH_KEY = '__search__'
// 存储的最大程度
const MAX_LENGTH = 15

// 把被点击的数据置到第一位
function insertSave (arr, val, compare, maxLen) {
  let fsIndex = arr.findIndex(compare)
  // 当在存储数组第一位，什么也不做
  if (fsIndex === 0) {
    return
  }
  // 当不在第一位时
  // 删除原先的存储，把当前数据插入到第一条
  if (fsIndex > 0) {
    arr.splice(fsIndex, 1)
  }
  arr.unshift(val)
  // 当本地存储数据大于最大值，删除最后一个数据
  if (arr.length > maxLen) {
    arr.pop()
  }
}

// 从数组中删除元素
function deleteFromArray (array, compare) {
  const index = array.findIndex(compare)
  if (index > -1) {
    // 如果找到就从中删除此元素
    array.splice(index, 1)
  }
  return array
}

export function saveSearches (query) {
  // storage方式获得本地存储数据
  let searches = storage.get(SEARCH_KEY, [])
  // 插入要存储的数据
  insertSave(searches, query, (item) => {
    return item === query
  }, MAX_LENGTH)
  // 存储到本地
  storage.set(SEARCH_KEY, searches)
  return searches
}

// 删除搜索历史
export function deleteSearches (query) {
  // storage方式获得本地存储数据
  let searches = storage.get(SEARCH_KEY, [])
  deleteFromArray(searches, (item) => {
    return item === query
  })
  // 存储到本地
  storage.set(SEARCH_KEY, searches)
  return searches
}

// 清除所有搜索历史
export function clearHistory () {
  // 清除key的方式清空搜索历史
  storage.remove(SEARCH_KEY)
  return []
}

// 获取本地存储
export function loadSave () {
  return storage.get(SEARCH_KEY, [])
}
